even when it is registered from the 'wrong' VCPU.
Signed-off-by: Keir Fraser <keir@xensource.com>
case VCPUOP_register_runstate_memory_area:
{
struct vcpu_register_runstate_memory_area area;
+ struct vcpu_runstate_info runstate;
rc = -EFAULT;
if ( copy_from_guest(&area, arg, 1) )
v->runstate_guest = area.addr.v;
if ( v == current )
+ {
__copy_to_user(v->runstate_guest, &v->runstate,
sizeof(v->runstate));
+ }
+ else
+ {
+ vcpu_runstate_get(v, &runstate);
+ __copy_to_user(v->runstate_guest, &runstate, sizeof(runstate));
+ }
break;
}